package club.service;

import club.pojo.Comment;
import com.github.pagehelper.PageInfo;

import java.util.List;

import club.pojo.Comment;
import com.github.pagehelper.PageInfo;

public interface CommentService {

    /**
     * 根据用户名和分页条件查询所有评论
     *
     * @param userName 用户名，用于筛选特定用户的评论
     * @param pageNum  当前页码
     * @param pageSize 每页显示条数
     * @return 分页后的评论列表
     */
    PageInfo<Comment> allComment(String userName, Integer pageNum, Integer pageSize);

    /**
     * 获取特定宠物ID下的所有评论
     *
     * @param petId 宠物的ID
     * @return 指定宠物ID下的所有评论列表
     */
    List<Comment> petComments(Integer petId);

    /**
     * 创建新的评论
     *
     * @param userId  用户ID，评论创建者的ID
     * @param petId   宠物ID，评论所属的宠物ID
     * @param content 评论内容
     * @return 创建成功后的评论ID
     */
    Integer create(Integer userId, Integer petId, String content);

    /**
     * 根据评论ID查找评论信息
     *
     * @param id 评论的ID
     * @return 对应ID的评论信息，若不存在则返回null
     */
    Comment findById(Integer id);

    /**
     * 查询所有评论（不区分用户名）并分页显示
     *
     * @param userName 用户名，可选，用于筛选特定用户的评论
     * @param pageNum  当前页码
     * @param pageSize 每页显示条数
     * @return 分页后的评论列表
     */
    PageInfo<Comment> all(String userName, Integer pageNum, Integer pageSize);

    /**
     * 更新评论信息
     *
     * @param comment 待更新的评论对象
     * @return 更新操作影响的行数，通常为1
     */
    int update(Comment comment);

    /**
     * 删除指定ID的评论
     *
     * @param id 待删除评论的ID
     * @return 删除操作影响的行数，通常为1
     */
    int delete(Integer id);
}
